package io;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * 对象流  ·java.io.ObjectOutputStream和ObjectInputStream
 * 对象是一对高级流作用是 进行对象序列化与反序列化
 * 对象序列化 将一个java对象转换为一组字节的过程
 * 反序列化 将一组字节(对象实例化后的字节)还原为java对象的过程;
 */
public class ObjectOutputStreamDemo  {
    //将一个person 的实例写入文件person.obj中保存
    public static void main(String[] args) throws IOException {
        String name="苍老师";
        int age =18;
        String gender="女";
        String []otherInfo={"是个演员","来自日本","台词较少","爱好写毛笔字"};
        Person p=new Person(name,age,gender,otherInfo);
        System.out.println(p.toString());
        FileOutputStream fos=new FileOutputStream("person.obj");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(p);
        /*
        对象输出流在写出对象时，要求写出的对象所属的类必须实现可序列化接口否则
        会抛出异常 java.io.NotSerializableException

        可序列化接口 java.io.Serializable
         */
        oos.flush();
        System.out.println("写出完毕");
        oos.close();
    }




}
